#include<iostream>

using namespace std;

const int N = 20;
bool col[N],dg[N],udg[N];
int n,x1,y1,res;
char path[N][N];
int dx[]={0,-1,-1,-1,0,1,1,1};
int dy[]={-1,-1,0,1,1,1,0,-1};

void dfs(int u)
{
	if(u==n+1)
	{
		res++;
		return;
	}
	for(int i=1;i<=n;i++)
	{
		if(!col[i] && !dg[u+i] && !udg[n-u+i] && path[u][i]!='*')
		{
			path[u][i]='*';
			col[i]=true,dg[u+i]=true,udg[n-u+i]=true;
			dfs(u+1);
			col[i]=false,dg[u+i]=false,udg[n-u+i]=false;
			path[u][i]='.';
		}
	}
}

int main()
{
	cin>>n>>x1>>y1;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++) path[i][j]='.';
	}
	path[x1][y1]='*';
	for(int i=0;i<8;i++)
	{
		int xx=x1+dx[i];
		int yy=y1+dy[i];
		if(xx>=1 && xx<=n && yy>=1 && yy<=n) path[xx][yy]='*';
	}
	dfs(1);
	cout<<res<<endl;
}
